iT邦幫忙

DAY 2
2

Java 學習筆記系列 第 2

Java 學習筆記 [2] Switch

  • 分享至 

  • xImage
  •  

今天的學習筆記中,遇到了一個很奇妙的問題,想要跟大家來分享一下,

那就是舊版的Java的SWITCH語法並不支援String(字串),只有支援數字,

只有新版本的才有支援,但是我的電腦是安裝舊版的,只好將這問題處理掉囉。

以下為舊版無法執行的程式碼

 public static void main(String[] args) {
       Scanner scn = new Scanner(System.in);
       int num1 = 36, num2 = 12;
       String sel="A";
       do {
           System.out.println("****** 運算選單 ******");
           System.out.println("\tA. 加(+)");
           System.out.println("\tB. 減(-)");
           System.out.println("\tC. 乘(*)");
           System.out.println("\tD. 除(/)");
           System.out.println("\tE. 離開系統");
           System.out.println("*********************");
           do {
               System.out.print("請選擇功能: ");
               sel = scn.next().toUpperCase();
               }
           while ("ABCDE".indexOf(sel) == -1);
       switch (sel) 
       {       
       case "A":
           System.out.printf(" %d + %d = %d%n", num1, num2, num1+num2);
           break;
       case "B":
           System.out.printf(" %d - %d = %d%n", num1, num2, num1-num2);
           break;
       case "C":
           System.out.printf(" %d * %d = %d%n", num1, num2, num1*num2);
           break;
       case "D":
           System.out.printf(" %d / %d = %d%n", num1, num2, num1/num2);
           break;
       case "E":
           System.out.println("結束程式");
       }
    }
       while (!(sel.equals("E")));
   }
}

以下為可在舊版執行之程式碼

package untitled9;
import java.util.Scanner;
public class Untitled2 {
    public static void main(String[] args) {
       Scanner scn = new Scanner(System.in);
       int num1 = 36, num2 = 12;
       String fruit;  
       do {
           System.out.println("****** 運算選單 ******");
           System.out.println("\tA. 加(+)");
           System.out.println("\tB. 減(-)");
           System.out.println("\tC. 乘(*)");
           System.out.println("\tD. 除(/)");
           System.out.println("\tE. 離開系統");
           System.out.println("*********************");
           do {
               System.out.print("請選擇功能: ");
               fruit = scn.next().toUpperCase();
               }
           while ("ABCDE".indexOf(fruit) == -1);
       {
       if (fruit.equals("A"))
               System.out.printf(" %d + %d = %d%n", num1, num2, num1+num2);
       if (fruit.equals("B"))
              System.out.printf(" %d - %d = %d%n", num1, num2, num1-num2);
       if (fruit.equals("C"))
              System.out.printf(" %d * %d = %d%n", num1, num2, num1*num2);
       if (fruit.equals("D"))
              System.out.printf(" %d / %d = %d%n", num1, num2, num1/num2); 
     }
   }
       while (!(fruit.equals("E")));
       System.out.println("結束程式");
  }
}

其實兩個程式碼的部份並沒有多大的差異,只是在於版本上要有認知,

不要像我這麼菜都不知道版本上有無支援此用法的關係。

兩個程式碼的差異在於我將Switch語法改寫成If,

讓每段程式碼都去判斷,但我有請教網路上一下高手們,

都不建議這麼做,因為說是會比較吃資源而且是笨方法XD。


上一篇
我的第一個Java程式
下一篇
Java 學習筆記 [3] String
系列文
Java 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
hanigogo
iT邦新手 3 級 ‧ 2014-09-18 10:45:33

第一個之後的if可以改成else if唷,
醬子就不會已經找到符合的,
但還是每一個都要判斷一次

0
Lance
iT邦新手 4 級 ‧ 2014-09-18 13:25:00

筆記筆記,謝謝 Sunny大大。

我要留言

立即登入留言